public class question_02 {
}
//class ListNode {
//      int val;
//      ListNode next;
//      ListNode() {}
//      ListNode(int val) { this.val = val; }
//      ListNode(int val, ListNode next) { this.val = val; this.next = next; }
//  }
class Solution_02 {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
//        考虑最大的长度
        int arr[]=new int[101];
        int index=0;
//        temp表示向前的进位，比如说9+8=17，这时的temp就是1
        int temp=0;
        while (l1!=null||l2!=null){
            int num1=0;
            int num2=0;
            if(l1!=null){
                num1=l1.val;
                l1=l1.next;
            }
            if(l2!=null){
                num2=l2.val;
                l2=l2.next;
            }
            arr[index]=(num1+num2+temp)%10;
            temp=(num1+num2+temp)/10;
            index++;

        }
//        考虑类似999+999的问题，就是两个列表都空了，但是temp还有值，得加到最后的结果里面
        if(temp!=0){
            arr[index]=temp;
//            这里也自加，这样就统一了
            index++;
        }
//        把数组里的结果添加到列表里并作为结果进行返回，注意返回的列表也是反向的
        ListNode list=new ListNode();
//        用result保留列表头部，方便最后的返回
        ListNode result= list;
        for (int f = 0; f < index; f++) {
//          和最后一个区别开，因为最后一个后面的listnode是没有的窝
            ListNode next=new ListNode();
            if(f!=index-1){
                list.val=arr[f];
                list.next=next;
                list=next;
            }else {
                list.val=arr[f];
            }
        }
        return result;
    }

    public static void main(String[] args) {
       ListNode listNode=new ListNode();
       listNode.val=9;
       ListNode listNode2=new ListNode();
       listNode2.val=9;
       ListNode listNode3=new ListNode();
       listNode3.val=9;
       listNode.next=listNode2;
       listNode2.next=listNode3;
        ListNode ln=new ListNode();
        ln.val=9;
        ListNode ln2=new ListNode();
        ln2.val=9;
        ListNode ln3=new ListNode();
        ln3.val=9;
        ln.next=listNode2;
        ln2.next=listNode3;
        Solution_02 solution_02 = new Solution_02();
        solution_02.addTwoNumbers(listNode,ln);

    }
}